clear;
clc;
addpath(genpath('../util'))
%大尺度衰弱参数
D0=1;
C0=10^(-30/10);
exponent_BS_LIS=2.2;
exponent_LIS_USER=2.8;

%BS位置
x_BS=0;
y_BS=0;
z_BS=25;

%LIS位置
x_IRS=0;
y_IRS=10;
z_IRS=40;

%用户位置范围
x_left=-50;
x_right=50;
y_left=10;
y_right=110;

%噪声功率
sigma=10^(-80/10)*10^(-3);

%发送功率
power=10^(45/10)*10^(-3);

%传输信噪比
rho = power/sigma/10^(14);

%BS-LIS距离 为防止运算溢出，故乘以10^(7)
d_BS_LIS=sqrt((x_BS-x_IRS)^2+(y_BS-y_IRS)^2);
[pathGain_BS_LIS] = pathLOS(d_BS_LIS,D0,exponent_BS_LIS,C0)*10^(7);

K = 4;
M=8;
NUM_timesamples = 1;

e=10^(-3);
for ueIdx = 1:K
    tau(ueIdx)= 0; %rand;sqrt(0.01)
end




almax = 10^2;
almin = 10^(0);

alpha_up = almax; %/rho
alpha_low = almin;%/rho

d=10;
f=10;
c1=2;
c2=2;
NUM=70;
P=20;


for i=1:NUM_timesamples
    i
    
    %生成用户路径损失
    for k=1:K
        x_user=rand*(x_right-x_left)+x_left;
        y_user=rand*(y_right-y_left)+y_left;
        d_IRS_user=sqrt((x_user-x_IRS)^2+(y_user-y_IRS)^2);
        %为防止运算溢出，故乘以10^(7)
        pathGain(k,1)=pathLOS(d_IRS_user,D0,exponent_LIS_USER,C0)*10^(7);
    end
    
        l=16;
        
        H1=randn(l,M)+j*randn(l,M);
        Hbar2 =randn(K,l)+j*randn(K,l);
        
        %生成信道
       [H1_3,Hbar2_3,T2_3] = getChannel2(l,M,K,5,H1,Hbar2,pathGain,pathGain_BS_LIS);
       
       [ F_best_PSO3,max_PSO3,alpha3 ]=AO(P,c1,c2,l,NUM,K,T2_3,Hbar2_3,tau,rho,M,H1_3,e,"PSO",alpha_low,alpha_up);
       sum_mon3=Sumrate_MonteCarlo(K,l,M,rho,alpha3,1,T2_3,Hbar2_3,F_best_PSO3,H1_3,tau);
       max_PSO3

end

